package com.pig4cloud.pigx.contract.enums;

import com.pig4cloud.pigx.common.customize.enums.CommonDictEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 合约模块仓位保证金变更明细枚举
 *
 */
public enum ContractPositionMarginDetailEnum {
	;

	/**
	 * 操作类型（0加、1减）
	 */
	@Getter
	@AllArgsConstructor
	public enum OperationType {
		/**
		 * 0 加
		 */
		ADD(CommonDictEnum.CalculationType.ADD.getName(), CommonDictEnum.CalculationType.ADD.getValue()),
		/**
		 * 1 减
		 */
		MINUS(CommonDictEnum.CalculationType.MINUS.getName(), CommonDictEnum.CalculationType.ADD.getValue());

		private final String name;
		private final String value;

		/**
		 * 根据name查找对应value
		 *
		 * @param name 枚举名称
		 * @return java.lang.String
		 * @since 1.0.0
		 */
		public static String findValue(String name) {
			for (OperationType item : values()) {
				if (item.getName().equals(name)) {
					return item.getValue();
				}
			}

			return null;
		}

		/**
		 * 根据value查找对应的name
		 *
		 * @param value 枚举值
		 * @return java.lang.String
		 * @since 1.0.0
		 */
		public static String findName(String value) {
			for (OperationType item : values()) {
				if (item.getValue().equals(value)) {
					return item.getName();
				}
			}

			return null;
		}
	}

	/**
	 * 业务类型（0开仓、1平仓、2调整保证金、3全仓自动追加）
	 */
	@Getter
	@AllArgsConstructor
	public enum BusinessType {
		/**
		 * 0 开仓
		 */
		OPEN_POSITION("开仓", "0"),
		/**
		 * 1 平仓
		 */
		CLOSE_POSITION("平仓", "1"),
		/**
		 * 2 调整保证金
		 */
		CHANGE_MARGIN("调整保证金", "2"),
		/**
		 * 3 全仓自动追加
		 */
		APPEND("全仓自动追加", "3");

		private final String name;
		private final String value;

		/**
		 * 根据name查找对应value
		 *
		 * @param name 枚举名称
		 * @return java.lang.String
		 * @since 1.0.0
		 */
		public static String findValue(String name) {
			for (BusinessType item : values()) {
				if (item.getName().equals(name)) {
					return item.getValue();
				}
			}

			return null;
		}

		/**
		 * 根据value查找对应的name
		 *
		 * @param value 枚举值
		 * @return java.lang.String
		 * @since 1.0.0
		 */
		public static String findName(String value) {
			for (BusinessType item : values()) {
				if (item.getValue().equals(value)) {
					return item.getName();
				}
			}

			return null;
		}
	}
}
